<?php
/**
 * CRUD de usuários
 *
 * @author Vinicius Mendonca <viniciusmr3@gmail.com>
 * @since 25/11/2012
 */
//necessário para todas as páginas do admin (facilitador)
include("defaultAdmin.php");
require_once(PASTA_DAO."Usuario.class.php");
require_once(PASTA_DAO."Endereco.class.php");
require_once(PASTA_DAO."Endereco.class.php");
require_once(FWK_UTIL."GeradorSenha.class.php");

//verificação se o usuário esta logado, cado contrário, este será redirecionado para o login.
if($objUsrSession->getIdAdministrador() == 0){
	HttpUtil::vaiPara("login.php?msg=1");
}


/**
 * VERIFICAÇÃO DA TELA QUE SERÁ EXIBIDA
 */
if(!isset($_GET["id"]))
$id = "";
else
$id = (int)$_GET["id"];
if(!is_numeric($id) || $id == 0 || $id=="")
$id = null;
$objCtrlSmarty->assign("id_usuario",$id);
$objUsuario = new Usuario();
$objEndereco = new Endereco();

if(!isset($_GET["a"]))
$_GET["a"] = "";
switch ($_GET["a"]){
	case 'form':
		if(isset($id)){
			//busco os dados do banco
			$arrCampos = $objUsuario->buscaCampos($id);
			$arrCamposEnderecos = $objEndereco->buscaCampos($arrCampos["id_endereco"]);
			//debug($arrCamposEnderecos);
			//seto no formulário os valores dos campos automaticamente
			foreach ($arrCampos as $nomeCampo => $fieldData) {
				switch ($nomeCampo){
					case "data_nascimento":
						if($fieldData != null && $fieldData != "")
						$objCtrlSmarty->assign($nomeCampo,FormataDatas::parseDataBR($fieldData));
						break;
					case "prof_usuario":
						switch ($fieldData) {
							case "Arquiteto(a)":
								$objCtrlSmarty->assign("prof1",'selected="selected"');
							break;
							case "Decorador(a)":
								$objCtrlSmarty->assign("prof2",'selected="selected"');
								break;
							case "Designer":
								$objCtrlSmarty->assign("prof3",'selected="selected"');
								break;
							case "Outros":
								$objCtrlSmarty->assign("prof4",'selected="selected"');
								break;
							default:
								break;
						}
						break;
					case "telefone_usuario" :
					case "celular_usuario":
						$fieldData = str_replace(array(".", "/", "(", ")", " ", "-"), "",$fieldData);
						$objCtrlSmarty->assign($nomeCampo,FormataString::mascara_string("(##) ####-####", $fieldData));
						break;
					case "status":
							if($fieldData == 'A'){
								$objCtrlSmarty->assign("status_a",'selected="selected"');
							}else{
								$objCtrlSmarty->assign("status_b",'selected="selected"');
							}
						break;
					default:
						$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
						break;
				}
			}
			//seta no formulário os valores dos campos de endereço automaticamente
			foreach ($arrCamposEnderecos as $nomeCampo => $fieldData) {

				$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
					
			}
		}
		$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formUsuarios.tpl"));
		break;
	case 'post':
		try{
			//validação preguiça de fazer em javascript
			$arrErros = array();
			if($_POST["nome_usuario"]=="")
			$arrErros["MENS_ERRO_NOME"] = "O Nome é obrigatório";
			if($_POST["cpf_usuario"]==""){
				$arrErros["MENS_ERRO_CPF"] = "O cpf é obrigatório";
			} else {
				$searchArray = array(".", "-");
				$replaceArray = array("", "");
				$_POST["cpf_usuario"] = str_replace($searchArray, $replaceArray, $_POST["cpf_usuario"]);
			}
			if($_POST["data_nascimento"]=="")
			$arrErros["MENS_ERRO_DATA_NASCIMENTO"] = "A data de nascimento é obrigatória";
			if($_POST["email_usuario"]=="")
			$arrErros["MENS_ERRO_EMAIL"] = "o Email é obrigatório";
			if($_POST["logradouro_endereco"]=="")
			$arrErros["MENS_ERRO_LOGRADOURO"] = "O logradouro é obrigatório";
			if($_POST["bairro_endereco"]=="")
			$arrErros["MENS_ERRO_BAIRRO"] = "O bairro é obrigatório";
			if($_POST["cidade_endereco"]=="")
			$arrErros["MENS_ERRO_CIDADE"] = "A cidade é obrigatória";
			if($_POST["id_estado"]=="")
			$arrErros["MENS_ERRO_ESTADO"] = "O estado é obrigatório";
			//fim validação dos dados
			//if($objUsuario->verificaCpf($_POST["cpf_usuario"]) == false) {
			//	$arrErros["MENS_ERRO_CPF"] = "CPF inválido";
				//$objCtrlSmarty->assign("cpf_usuario",);
			//}
				
//			print("<pre>");
//			print_r($_POST);
//			die();
			
			
			if(count($arrErros) == 0){
				$id = (int)$_POST["id_usuario"];
				$arrDadosCad = null;
				if(!is_numeric($id) || $id == 0 || $id==""){
					$id = null;
				}else{
					$arrDadosCad = $objUsuario->buscaCampos($id);
				}
					
				$idEndereco = (int)$_POST["id_endereco"];
				if(!is_numeric($idEndereco) || $idEndereco == 0 || $idEndereco=="")
				$idEndereco = null;
					
				$objEndereco->alterar($idEndereco,$_POST);

				$_POST["id_endereco"] = $objEndereco->id_endereco;

				//$_POST["status"]='A';
				
				if(isset($_POST["data_nascimento"]) && $_POST["data_nascimento"] != "") {
					$_POST["data_nascimento"] = FormataDatas::parseDataSql($_POST["data_nascimento"]);
				}
				
				if(isset($_POST["senha_usuario"]) && $_POST["senha_usuario"] != ""){
					$_POST["senha_usuario"] = base64_encode(md5($_POST["senha_usuario"]));
				}else if($arrDadosCad != null){
					$_POST["senha_usuario"] = $arrDadosCad["senha_usuario"];
				}

				$objUsuario->alterar($id,$_POST,null);
				HttpUtil::vaiPara("CrudUsuarios.php?msg=3");
			}else{
				//loop para preencher, em caso de erro, o formulário
				foreach ($_POST as $nomeCampo => $fieldData) {
					$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
				}
				//loop para setar os lugares com os erros
				foreach ($arrErros as $nomeErro => $conteudo) {
					$objCtrlSmarty->assign($nomeErro,$conteudo);
				}
				//exibo o form aqui
				$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formUsuarios.tpl"));
			}
		}catch(CustonException $e){
			//loop para preencher, em caso de erro, o formulário
			foreach ($_POST as $nomeCampo => $fieldData) {
				$objCtrlSmarty->assign($nomeCampo,utf8_encode($fieldData));
			}
			//loop para setar os lugares com os erros
			foreach ($arrErros as $nomeErro => $conteudo) {
				$objCtrlSmarty->assign($nomeErro,$conteudo);
			}
				
				
			$objCtrlSmarty->assign("MENS_ERRO_CPF","Você ja esta cadastrado!");
			$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/formUsuarios.tpl"));
		}
		break;
	case 'aprovar':
		$arrCampos = $objUsuario->buscaCampos($id);

		//$destinatario  =  $arrCampos["email_usuario"];//"andreccls@gmail.com";
		$destinatario = $arrCampos["email_usuario"];
		$senha = GeradorSenha::gerarSenha();

		foreach ($arrCampos as $key => $campo) {
			$arrCampos[$key] = utf8_encode($arrCampos[$key]);
		}

		//altera o status e seta a senha do usuario
		$arrCampos["status"] = "A";
		$objUsuario->alterar($id,$arrCampos,null);

		$assunto = "Platinum - Ativação de cadastro";
		$mensagem = "
				<html>
					<head>
					 	<title>Platinum - Ativação de cadastro</title>
					</head>
					<body>
						<p>Prezado(a) ".$arrCampos["nome_usuario"].", bem vindo(a) ao Platinum - Prima Linea.</p><br/>
						
						<p>Seu cadastro foi aprovado com sucesso, segue abaixo sua senha para acesso ao site:</p><br/>
						
						<p>Usuário: ".$arrCampos["email_usuario"]."</p><br/>
						<p>Senha: ".$senha."</p><br/>
						
						<a href='http://www.platinum.com.br'>http://www.platinum.com.br</a><br/><br/>
						
						-- Equipe Platinum --
					</body>
				</html>";
		$cabecalhos  = "MIME-Version: 1.0" . "\r\n";
		$cabecalhos .= "Content-type: text/html; charset=utf-8" . "\r\n";
		$cabecalhos .= "To: Contato <".$destinatario.">" . "\r\n";
		//$cabecalhos .= "From: ".$_POST["nome_contato"]." <".$_POST["email_contato"].">" . "\r\n";
		$cabecalhos .= "From: Platinum - Prima Linea <platinum@primalinea.com.br>" . "\r\n";

		mail($destinatario, $assunto, $mensagem, $cabecalhos, '-fandreccls@gmail.com');

		HttpUtil::vaiPara("CrudUsuarios.php?msg=1");

		break;
	case 'excluir':
		try{
			$arrCampos = Utf8Parsers::arrayUtf8Encode($objUsuario->buscaCampos($id));

			//altera o status e seta a senha do usuario
			$arrCampos["status"] = "E";
			$arrCampos["bkp_cpf"] = $arrCampos["cpf_usuario"];
			$arrCampos["cpf_usuario"] = "";
				
			$objUsuario->alterar($id,$arrCampos,null);
				
			//$objUsuario->deletar($id);
			HttpUtil::vaiPara("CrudUsuarios.php?msg=4");
		}catch(CustonException $e){
			throw new CustonException("Imppossível deletar o dado da tabela ");
		}
		break;
	case 'lista':
	default:
		$objCtrlSmarty->assign("EXIBIR_ACOES_RANKING", "S");
		$objCtrlSmarty->assign("EXIBIR_ACOES", "S");
		
		if(isset($_GET["p"]) && $_GET["p"]!="" && is_numeric($_GET["p"]))
		$pagAtual = (int)$_GET["p"];
		else
		$pagAtual = 0;
		$objCtrlSmarty->assign("pagAtual", $pagAtual);
		$objCtrlSmarty->assign("CONTEUDO_ADMIN",$objCtrlSmarty->fetch(TPLS_FILE."admin/listaUsuarios.tpl"));
		break;
}

//definição da estrutura do admin <cabecalho, corpo e rodape>
$objCtrlSmarty->assign("ESTRUTURA",$objCtrlSmarty->fetch(TPLS_FILE."admin/adminEstrutura.tpl"));

//ultima coisa que deve ter no arquivo, serve para imprimir a tela
$objCtrlSmarty->display(TPLS_FILE."index.tpl");
?>